// grpc通讯组件
package grpc

import (
	"context"
	"errors"

	"gitee.com/xgotool/sqlite-logs-more/protoc"
	"gitee.com/xgotool/sqlite-logs-more/service/rootdb"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)

// 基础Service服务
type GrpcRemote struct {
	Dervice  *rootdb.Dervice // 设备信息
	HartTime int64           // 上次心跳时间[unix时间戳]
	protoc.UnimplementedRemoteServer
}

// 转换为404未找到错误
//
//	err	404错误日志
func notFond(err error) error {
	return status.Errorf(codes.NotFound, err.Error())
}

// 记录系统错误日志
//
//	err	系统报错日志
func sysErr(err error) error {
	return status.Errorf(codes.AlreadyExists, "记录失败：%s", err.Error())
}

// 获取设备详情
//
//	cnt	客户端传入的content对象
func getDid(cnt context.Context) (*rootdb.Dervice, error) {
	did := cnt.Value("_did")
	if d, ok := did.(int64); ok {
		return rootdb.DerviceInfo(d)
	}
	return nil, errors.New("参数类型错误")
}
